package main

import "fmt"

func main() {
	channelClose()
}

// channelClose
//
//	@Description: 遍历管道不能使用使用fori 长度会变化！！！
//
// 遍历管道-使用for range ，使用前必须关闭channel,否则：fatal error: all goroutines are asleep - deadlock!
func channelClose() {

	ch := make(chan int, 100)
	//内置函数关闭channel，只能读，不能写数据
	for i := 0; i < 50; i++ {
		ch <- i * 2
	}

	close(ch)
	//ch <- 100 //panic: send on closed channel

	//遍历管道不能使用使用fori 长度会变化！
	//for i := 0; i < len(ch); i++ {
	//	v := <-ch
	//	fmt.Printf("v=%v \n", v)
	//}

	//使用for range ，使用前必须关闭channel,否则：fatal error: all goroutines are asleep - deadlock!
	for v := range ch {
		fmt.Printf("v=%v \n", v)
	}

}
